package cn.hgy.domain.tag.service;

import cn.hgy.domain.tag.model.entity.CrowdTagsJobEntity;
import cn.hgy.domain.tag.repository.ITagRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Slf4j
@RequiredArgsConstructor
@Service
public class TagServiceImpl implements ITagService{

    private final ITagRepository tagRepository;

    @Override
    public void execTagBatchJob(String tagId, String batchId) {
        log.info("人群标签批次任务：tagId: {} batchId: {}", tagId, batchId);

        // 1. 查询批次任务
        CrowdTagsJobEntity crowdTagsJobEntity = tagRepository.queryCrowdTagsJobEntity(tagId, batchId);

        // 2. 采集用户数据 - 这部分需要采集用户数的消费类数据，后续有用户发起拼单后再处理

        // 3. 数据写入记录
        List<String> userIdList = new ArrayList<String>() {{
            add("hgy");
            add("lxy");
        }};

        // 4. 一般的人群标签的处理在公司中，会有专门的数据数仓团队通过脚本的方式写入到数据库，就不用这样一个个或者批次来写
        for (String userId : userIdList) {
            tagRepository.addCrowdTagsUserId(tagId, userId);
        }

        // 5. 更新人群标签统计量
        tagRepository.updateCrowdTagsStatistics(tagId, userIdList.size());
    }
}
